为您找到与java毕业论文范文5篇 文秘写作相关的共200个结果:
文秘是随着科学与经济的高速发展,信息传播的急剧膨胀,社会竞争日趋激烈而同时产生的一门新兴现代科学管理专业。作为一种全球性职业,文秘工作也显得越来越趋于现代化、科学化与专业化。它在辅助各级领导进行综合管理、树立企业形象、沟通内外关系、处理信息的交流等方面发挥着越来越重要的作用。本文为大家提供会议纪要范文,欢迎大家阅读学习。
XX年第37期 签发人:
会议时间:
会议地点:
主持人:
参加人员: ***、***、***及各部门负责人等
记录 人:***
会议内容
本次周例会听取了各部门上周工作情况汇报及本周工作计划,公司领导对本周重点工作进行了安排部署。现将会议纪要如下:
一、安全管理方面:
1、安健环部要按照公司关于秋季安全生产大检查的部署,认真落实秋检工作,做到人员落实、项目落实、时间落实,确保秋检收到实效,不走过场,不流于形式。
公司第七次安委会初步定于9日上午召开,这既是一次月度的安委会会议,也是季度的安委会会议。届时请全体安委会成员务必参加,特别是江苏三建公司和上海电建公司的主要负责人均要参加。会议不仅讨论研究安全工作,还要就进度、质量等一系列与工程施工相关的问题进行磋商。
2、工程部、物资部要按照公司的要求,严格检查已到设备的保管情况,做好防腐防锈工作;同时就设备监造中发现的问题与监造单位进行沟通,严格执行考核制度。
其他:
1、综合管理部要将国华公司十周年庆典所需上报的各种材料疏理清楚,精心准备,按期上报,不能有遗漏。
2、立丰公司要尽快完成#5、6楼的结算工作,同时做好#3、4楼的结算准备工作。
3、立丰公司办公室板房已经完工,请信息中心尽快协助接通网络等,以保证立丰公司搬迁后正常开展工作。
4、做好三季度工程综合奖励的各项准备工作。
发:公司领导、副总师、各部门
XX公司综合管理部XX年XX月XX日
纪要整理:***、***、***
浏览量:3
下载量:0
时间:
文秘是随着科学与经济的高速发展,信息传播的急剧膨胀,社会竞争日趋激烈而同时产生的一门新兴现代科学管理专业。作为一种全球性职业,文秘工作也显得越来越趋于现代化、科学化与专业化。它在辅助各级领导进行综合管理、树立企业形象、沟通内外关系、处理信息的交流等方面发挥着越来越重要的作用。本文为大家提供文秘会议简报写作范文,欢迎大家阅读学习。
会议简报
**********集团公司财务工作会议
简 报
(第 期)
在清产核资工作全面展开、新的《企业会计制度》即将实施、主辅分离逐步开展的形势下,12月16日~18日,集团公司在********楼召开了*********集团2003年度财务工作会议,各子分公司总会计师、财务科长、决算人员、审计人员,各指挥部办事处财务主管等130余人参加了会议。
集团公司总会计师**********出席会议并做了重要讲话,在讲话中,********从认清新的财务形势、树立新的财务理念、完善成本管理机制、规范资金运作、实施新《企业会计制度》、做好清产核资工作、做好财务预算工作、做好审计工作、加强会计基础工作、加强财会队伍建设等十个方面做出重要指示,为集团公司下一步的财务工作指明了方向。
集团公司副总会计师、财会部部长***********总结了2003年度************集团公司财务工作情况,并对下一年度*******集团公司的财务工作做出了安排布置,提出了2014年度财务工作九个方面的要点:加强内部资金管理,提高信用意识;加大成本管理工作,探索有效的成本管理途径;严格执行财务预算制度,加大对资本运营中的监控;做好清产核资工作,为全面执行《企业会计制度》奠定基础;执行《企业会计制度》,完善相关的财务配套制度;结合“主辅分离”,紧缩经费开支;开展财会信息化建设,促进财会管理水平的提高;继续加强财会队伍的建设,提高公司的财务管理水平;加强财会学会建设,充分发挥财会学会的作用。
此次财务工作会议全面布置了2014年度财务决算编制工作,提出了2015年财务预算的编制要求,明确了清产核资的步骤和方法,解答了汇总纳税及青藏退税的有关问题。为下一步做好财务决算编制工作,提高财务预算的编制水平,加强国有资产的监控管理,合理筹划纳税工作,全面实施《企业会计制度》打下了基础,做好了准备。
浏览量:2
下载量:0
时间:
文秘是随着科学与经济的高速发展,信息传播的急剧膨胀,社会竞争日趋激烈而同时产生的一门新兴现代科学管理专业。作为一种全球性职业,文秘工作也显得越来越趋于现代化、科学化与专业化。它在辅助各级领导进行综合管理、树立企业形象、沟通内外关系、处理信息的交流等方面发挥着越来越重要的作用。本文为大家提供文秘述职报告写作范文,欢迎大家阅读学习。
尊敬的各位领导:
大家好!
本人,本科学历,中共党员,****年9月参加工作,****年9月通过竞聘到办公室做秘书工作,一年来,在秘书这个岗位上,我始终牢记一个宗旨,这就是认真履行职责,兢兢业业工作,以实为本,尽心尽责,认真做好各项工作。一年来,在公司领导的关心和指导下,在部室主任和同事们的热情帮助以及个人的辛勤努力下,工作中取得了一定的成绩,现向各位领导作以汇报。
一、概述:任职期间,较圆满地完成了应负责的本职工作任务和领导布置的临时任务。
二、履行职责情况及工作中取得的成绩:
1.受总经理委派、处理具体事务和问题,各项工作对总经理负责。
2.受总经理委托,协调公司领导之间、系统各职能部门之间,分公司之间的工作关系。
3.及时传达贯彻上级和公司有关会议、文件、批示精神。
4.组织安排公司各种会议,负责并督促会议决议的贯彻落实,并对各部门情况及时跟进反馈。
5.及时组织完成总经理、公司所需文件的起草,有关材料的拟制。
6.圆满地完成公司来访团体的商务接待工作。
7.处理各类来电及信访工作,解除总经理为琐事缠身的困扰,使其可集中精力执行公司经营决策。
8.为发挥好参谋助手作用,积极搜集相关信息,分类整理;经常深入调查研究,了解和全面掌握实际情况,在实际工作中注意,利用各种方式了解生产经营情况,倾听各级领导和职工的建议,征求公司相关部门的意见;为领导相关工作参好谋、献好策。
9.承办工作是秘书的主要工作之一,有来自上级领导、上级部门的,也有来自外部的,但主要是来自公司领导、系统职能部门和分公司的事宜,还有些日常事务性工作,可以说是千头万绪,如何处理和承办好每一项工作,我的作法一是先办主要工作、后办次要事项,先急后缓;二是先办上级和外来的,后办内部的;承办的每一项工作和事情,都必须做到向公司负责,向领导负责,向职工负责。
10.出色地完成本部门文件的打印、收发以及管理。
三、遵章守纪情况:
1、工作期间,积极学习并遵守公司的各项规章制度,无违章违纪现象,不做有损公司利益的事情。
2、团结同事,能通过沟通的方式解决工作中存在的问题;任职以来未曾出现差错。
四、个人存在的不足:
几个月来,虽然作了一些应该做的工作,这与公司的正确领导和各部门同事的大力支持是密不可分的,但细想起来,仍然存在一些问题,主要是:
1.调查研究深入还不够,有些情况没有及时地掌握,以致为领导参谋、决策还不到位。
2.在工作中偶尔会情绪化,有急于求成的现象。
在今后的工作中,本人将认真总结过去的经验教训,努力克服缺点,进一步加强学习,不断提高文字综合能力,提高工作的质量和水平,力求使各项工作有新的进步。
浏览量:2
下载量:0
时间:
文秘是随着科学与经济的高速发展,信息传播的急剧膨胀,社会竞争日趋激烈而同时产生的一门新兴现代科学管理专业。作为一种全球性职业,文秘工作也显得越来越趋于现代化、科学化与专业化。它在辅助各级领导进行综合管理、树立企业形象、沟通内外关系、处理信息的交流等方面发挥着越来越重要的作用。本文为大家提供文秘通知文书写作范文,欢迎大家阅读学习。
单位接收函
_________派出所主管同志:
现有本单位职工____,男,________,身份证号:________前往你处办理户口迁移手续,本单位同意接收该人,并协助其办理户口在____落户事宜。特此证明。
单位公章
经手人:XXX
联系电话:XXXX
2015年7月2日
浏览量:3
下载量:0
时间:
文秘是随着科学与经济的高速发展,信息传播的急剧膨胀,社会竞争日趋激烈而同时产生的一门新兴现代科学管理专业。作为一种全球性职业,文秘工作也显得越来越趋于现代化、科学化与专业化。它在辅助各级领导进行综合管理、树立企业形象、沟通内外关系、处理信息的交流等方面发挥着越来越重要的作用。本文为大家提供文秘通知文书写作范文,欢迎大家阅读学习。
公司更名通知函
致: 有限公司
由于公司发展需要,“北京 有限公司”名称从 2010 年 10
月 9 日变更登记为“北京 有限公司”,届时原公司“北京 有限公司”的 业务由北京 有限公司继续经营,原公司签订的
合同继续有效。即日起,公司所有对内及对外文件、资料、开据发票,
账号,税号等全部使用新公司名称。
公司更名后,业务主体和法律关系不变,
原签订的合同继续有效,原有的业务关系和服务承诺保持不变。
因公司名称变更给您带来的不便,我们深表歉意!
衷心感谢您一贯的支持和关怀,我们将一如既往地和您保持愉快
的合作关系,并希望继续得到您的关心和支持!
特此通知!
****有限公司
浏览量:3
下载量:0
时间:
(一)述职报告的含义
述职报告是领导干部依据自己的职务要求,就一定时期内的任期目标,向选举或任命机构、上级领导机关、主管部门以及本单位的干部群众,汇报自己履行岗位责任情况的书面报告,是干部管理考核专用的一种文体。
述职报告虽以“报告”为名,跟作为党政主要公文的“报告”却不是同类文体,内容、功能和作者身份都有很大不同。述职报告的内容包括任职期间所取得的工作成绩、不足和失误之处以及存在的主要问题,跟总结倒有不少相似之处。
述职报告可分为年度述职报告、阶段述职报告、任期述职报告等类型。
(二)述职报告的作用
随着我国干部人事制度改革的进一步深化和公务员制度的实行,作为**考核干部程序中的一个重要环节,领导干部的述职越来越显出其重要的意义。述职报告作为述职的文本,其作用主要体现在以下几个方面:
1.撰写述职报告是完善干部管理制度的一项重要措施
在岗位职责明确的前提下,要求担任一定职务的领导干部定期撰写述职报告,便于干部管理部门对领导干部的理论水平、道德品质、文化修养、业务能力进行全面细致的考察,以便根据干部自身的发展趋势,有计划有目的地进行选拔、培养、使用干部,减少或避免使用干部中的主观性和盲目性。
2.述职报告是广大群众评议干部的依据
领导干部在某个岗位上工作一段时间之后,通过述职报告的形式向广大群众汇报履行岗位职责的情况,让群众进行审查和评议,这是领导干部接受群众监督、倾听群众意见的有效方式,有助于密切干部群众的关系,克服官僚主义作风。
3.撰写述职报告有利于干部的自我提高
领导干部在某个岗位上工作一段时间之后,需要通过述职的方式对自己前一段的工作实践进行回顾,总结以前的工作经验,汲取以前的失败教训,强化自己的职责观念。这对于更好地探索本职工作的规律,促进领导干部自我认识、自我学习、自我提高有着重要的作用。
二述职报告的内容
述职报告的内容,不同行业、不同层次的领导各不相同。但不论哪一行业,哪一个级别和层次的领导的述职报告,都应该具有以下几个方面的内容:
(一)岗位职责
述职报告首先要简明扼要地介绍自己的基本情况,如所任职务,任职时间。然后要详细介绍自己的岗位职责范围,即自己分管的工作、任职期间的主要工作目标。之所以要详细介绍,是因为岗位职责是群众评议和干部考核部门衡量述职者是否称职的标准。同一层次甚至同一职位的领导者因为分工的不同其职责范围各不相同,但岗位职责是任何一个职位都具有的。
(二)指导思想
这是每一位领导干部工作的不可缺少的前提条件。领导干部的工作有其目的性和原则性,那就是站在党的立场上,依据党和国家的政策法规去观察事物、分析问题、处理问题,开展工作。没有正确的指导思想,没有对党和国家的方针政策的深入领会,就不可能辨明工作中的是非曲直,看清事物的本质,找出存在的问题,采取正确的方法,从而很好地完成自己的本职工作。
浏览量:3
下载量:0
时间:
文秘是指经过学习、掌握公关与文秘专业的基本理论与基本知识,熟悉现代文书学,秘书学的原理和方法,具有较强的写作能力,能熟练的从事文书、秘书事务工作,能进行文章写作,文学编辑和新闻写作,有较强的公关能力,并从事信息宣传、文秘服务、日常办公管理及公共关系等工作。
一、年会主题:
XXX公司xx年度年终总结会
二、年会时间
xx年xx月xx日下午14点00分至21点30分
会议时间:14:00——17:30
晚宴时间:18:00——21:30
年会地点
西国贸酒店一层多功能宴会厅
年会参会人员
公司全体员工(41人)
年会流程与安排
本次年会的流程与安排包括以下两部分:
年终大会议程安排
13:50 全体参会员工提前到达指定会堂,按指定排座就位,等待员工大会开始;
14:00—15:30 大会进行第一项,各部门及各项目负责人上台分别做年终述职报告。
15:30—15:45 大会进行第二项,由行政人事部负责人上台宣读公司各部门及项目主要负责人人事任命决定书。
15:45—16:00 大会进行第三项,副总经理宣读2010年度优秀员工获得者名单;优秀员工上台领奖,总经理为优秀员工颁发荣誉证书及奖金;优秀员工与总经理合影留念;优秀员工代表发表获奖感言。
16:00—17:30 大会进行第四项,总经理做总结性发言。
17:30 大会结束,员工散会休息,酒店布置晚宴会场
晚宴安排
18:00 晚宴正式开始,晚宴主持人引导大家共同举杯,祝福大家新年快乐,祝愿公司的
明天更加美好。(背景音乐)
18:00—19:00 用餐时段:公司领导及员工到各桌敬酒,同事间交流沟通,拉近彼此距离。
19:00—21:00 娱乐时段:
文艺节目(2—3个节目)
游戏1:坐气球比赛,用具:3把椅子、各装20支气球的3个箱子;
游戏规则:2人一组,共3组,一个人递球,一个人坐球,限定时间为3分钟,3分钟后,箱子内省的球最少的胜出;
文艺节目(2—3个节目);
游戏2:抢凳子; 用具:5把椅子,围成一圈;
游戏规则:将椅子围成一圈,响音乐,6个人转圈围着椅子走,音乐停,6个人抢坐,没有抢着的输;
文艺节目(2—3个节目)
游戏3:筷子运钥匙链;用具:12支筷子、2个钥匙链;
游戏规则:6个人一组,分为两组,每个人嘴里叼一只筷子,将钥匙链挂在第一个人的筷子上,第一个人将钥匙链传给第二个人,必须用筷子传,不能用手,哪个组最先将筷子传到最后一个人的筷子上,为赢。
游戏4:呼啦圈传区别针;用具:呼啦圈3个、曲别针18个;
游戏规则:3个人,每人一个呼啦圈,手里6个曲别针,每个人
在转呼啦圈的同时,要将手里的6个曲别针连在一起,谁先将6个曲别针连在一起,谁就胜出;
游戏5:踩气球;用具:100个气球
游戏规则:分为两组,一组5个人,每个人球上绑10个气球,主持人限定时间3分钟,互相踩对方队员腿上的气球,3分钟后,看哪个组队员总署气球省的多,就胜出。
幸运抽奖活动:用具:抽奖箱、卡片49张、乒乓球49个
每个人手里有一张带数字的卡片,将乒乓球上写上相应的数字,放进抽奖箱,指派专人分别来抽一至四等奖。最后主持人邀请全体员工上台合影留念
年会准备及相关注意事项
年会的通知与宣传:公司办公室于今天向机关各部门及各项目部发出书面的《关于2010年度年终总结会的通知》,对本次年会活动进行公示和宣传,达到全员知悉。
条幅的制作:红底黄字字幅,具体文字内容:“北京大龙七分公司2010年度年终总结会”(条幅规格: )
物品的采购:抽奖礼品、生肖礼品、游戏奖品、大会席位人名牌(会议用)、笔、纸、员工席位卡(晚宴用)、会场布置所需气球、拉花、花篮;游戏所用乒乓球拍、乒乓球;抽奖箱;会议所需矿泉水、晚宴所需酒水、各类干果小食品。
现场拍照:提前安排好相关人员携带数码相机,做好大会及晚宴活动现场的拍照工作。
年会筹办任务
任务与分工 责任人
会务前期、中期协调工作
会议阶段主持人
晚宴阶段主持人
物品购置(抽奖礼品、生肖礼品、游戏奖品、席位卡片、笔、纸、气球、打气筒、拉花、花篮、乒乓球拍、乒乓球;抽奖箱、酒水、各类干果小食品)
会场布置
条幅、证书、人名台制作、鲜花预定
现场拍照
浏览量:2
下载量:0
时间:
文秘是指经过学习、掌握公关与文秘专业的基本理论与基本知识,熟悉现代文书学,秘书学的原理和方法,具有较强的写作能力,能熟练的从事文书、秘书事务工作,能进行文章写作,文学编辑和新闻写作,有较强的公关能力,并从事信息宣传、文秘服务、日常办公管理及公共关系等工作。
尊敬的公司领导:
您好!在此,我怀着十分沉重的心情向您做出深刻的检讨!作为公司一名重要店面在岗人员,因为擅自离岗而写检讨书,感到十分的无奈和懊悔!今天写下这份检讨书,是对我以后不再犯类似错误而做出的决心。由于我有侥幸的心里,认为公司不会发现我的擅自脱岗,没料到今天上海公司总部领导正好过来,但无论如何触犯了公司的铁律,就要承担起自己犯下的错误!但我可以保证,仅此一次而已,绝对不会有下次。我不再是学生了,对自己的业绩和公司的未来我很清楚,思想上的觉悟也是很强烈的。我于XX年10月21日中午13时——当日下午18时期间因为个人原因未曾向单位请假,并在未经同意的情况下擅自离岗,严重扰乱了公司的管理秩序和个人工作业绩,给公司的管理工作带来极大的麻烦,在同事之间也造成了不好的影响。我认真反思,深刻自剖,为自己的行为感到了深深的愧疚和不安!
在此我谨向各位领导做出深刻检讨,并将我今日的思想反思结果向领导阐述。工作也有一段时间了,在大家的批评指导下我也有了些进步。这次我辜负了领导对我的期望,和同事对我的爱护。深觉我对不起大家,在这里向你们表示深深的歉意。同时借此机会我也总结了几条自己的缺点由于经验不足,偶尔热情、耐心不够,以及能力上还未能达到最优秀的表现,以后会逐一改正。希望早日能成为各位心中的理想员工!汇报如下:
每个员工都是公司的一份子,因此个人的行为都代表着我们的整体形象,也深深的影响着身边同事的工作态度和积极性。工作中和生活中,不管发生什么事情都要首当站在集体的立场上为我们整个团队负应尽的责任,想领导之所想,以公司利益为出发点,服从领导的合理统一安排,按时做好自己的本职工作,努力提高工作质量和效率。自此,我更加深刻的意识到自己行为带来的严重后果:如果在公司内部形成这种目无组织和纪律的不良风气,更好的提高个人工作能力将无从谈起。
同时我也要为今天所做的行为予以交代希望领导的谅解。首先我是一名来自外省的员工又是女孩子自身的物品尤其是电话、证件等是我与家庭联系个人安全最为紧密和提高自我安全的重要财务。一旦在不该发生的情况下被盗自然会紧张和无助从而条件反射下做出一些不够冷静和激动的行为。当然这不但需要领导的理解,更该通过这件事加强自我的安全防范意识这也是搞好工作的一个重要保证。不过在这么正规、有内保、有监控的商场,遇到类似时间安全部门不能有效及时的为我们商铺人员做出正确积极的处理措施也是导致此次事情的缘由,当然如此规模和对他们来说微不足道的事情即便做出合理的反映也可能无济于事但是我连最起码的事件处理方法也没有看到。
其次因为一时心急忘记在如此重要的店面工作中只有我区区一人在岗,由于我的暂时离开使公司工作没能正常开展,我在对我的行为感到后悔同时也希望领导能在遇到类似突发事件时能妥善安排一名公司内部合适的工作人员临时替班,以避免公司不必要的利益损失。
最后我想说明中午我本打算利用午饭时间最快速度回家取相应证件去重新办理电话卡以便最短时间内保护个人和公司部分利益的安全,同时也是怕在遗失期间不能及时接听到客户的来电和公司的领导临时要求。但是没想到交通的堵塞和营业厅人员过多的现实问题导导致延误过久时间,对此我也十分懊恼。
xx
2015年7月2日
浏览量:2
下载量:0
时间:
文秘的主要工作之一是写作,本文为大家提供写作基础指导,欢迎大家阅读借鉴。
关于拟派×××同志赴香港培训的函
××工委:
我部上海海运局海员医院,于一九八五年订购了一台美产高效液相色谱仪。现应卖方香港贝克曼仪器公司的邀请,拟派上海海员医院药剂师×××赴香港接受为期一周的培训。按订货合同规定,自广州至香港往返旅费及在港培训期间的交通、宿、膳费用,均由该公司提供。
妥否,请函示。
附贝克曼仪器公司邀请信、签报一份(复印件)
× × 部
一九八六年×月×日
简析:
例文l是商洽工作请求批准的“发函”,因为不相隶属而又是主管单位,所以用“函”。正文只四句话。前三句为一段,说明原委及条件,后一句另起,很有礼貌地提出,要求批准。写“请函示”“请电示”皆可,因为是不相隶属的关系。下面是附件备查。写得明白利落。
例文2(见下页):
国家档案局办公室、轻工业部办公厅关于推荐两种圆珠笔油墨用于书写文件的函
各省、自治区、直辖市党委和人民政府办公厅、各省、自治区、直辖市档案局、档案馆,中央、国家机关办公厅(室),中央档案馆、中国第一、第二历史档案馆:
1983年5月30日,国家档案局就两种圆珠笔油墨可以用于书写文件的问题,向中央办公厅、国务院办公厅作了报告,两厅领导批示同意。现将报告转发给你们,请研究并逐步推荐使用322(黑)、424(纯蓝)油墨灌注的笔芯,以利今后档案的耐久保存。其中,用322黑油墨书写的文件,更适合复印和缩微摄影。
关于两种圆珠笔芯的生产安排、商标设计等事项,轻工业部一轻局已于1983年12月9日函告有关单位,现将一轻局的函一并发去,供参考。
附件:1.国家档案局《关于两种圆珠笔油墨可用于书写文件的报告》;2.轻工业部一轻局第22号函。(略)
国家档案局办公室轻工业部办公厅
1984年元月24日
简析:
文秘公函例文2是知照性发函,主动告知事项而不必复函的。标题三部、发函机关、事由和文种。上款收函单位多个用笼统式写法配合具体单位。正文,主动告知关于两种圆珠笔油墨可用于书写文件事情的来龙去脉、推荐使用,将报告批件转发去;接着两种圆珠笔芯的生产、商标等事项由生产主管部门函告有关单位,将函一饼转去。结论为“供参考”,很得当。把两份文件作为附件,注明在函末。最后是落款、单位和日期。
浏览量:3
下载量:0
时间:
文秘写作在教学过程中应贯穿写作能力与职业技能两条主要线索,既要强调文秘写作与其它文体写作的不同,认识文秘职业的独特性,从文秘职业出发进行写作教学,同时由于写作过程的综合性特点,又要强调学生具备一定的观察能力、搜集信息的能力、社会调查研究的能力、逻辑思维能力和语言表达能力。会议记录是文秘的工作职责之一,下面是关于文秘会议记录写作基础范文,仅供大家参考。
第一是记录会议的组织情况、应写明:
1.会议的名称;
2.开会的时间;
3.开会的地点;
4.出缺席和列席人员;
5.主持人的姓名;
6.记录人的姓名;
7.备注;有些会议还要写清楚会议的起止时间(年、月、日)。
第二部分是记录会议的内容,这是会议记录的重要组成部分。
1。要写明发言人的姓名,发言的内容,包括讨论的内容,提出的建议,通过的决议等。必要时,还要记下表决情况(如全体通过或多少人同意,多少人异议,多少人弃权)。
2。记录还要记下会议的有关动态。如发言中的插话、笑声、掌声,临时中断以及会场重要情况等等。
3。会议结束,记录完了,就要另起一行写“散会”两字。重要的会议记录,要有主持人和记录人在正文结尾右下方签字。
4。会议的记录在方法上有详细记录和摘要记录两种。这两种记录,采用哪一种,要根据会议的性质和内容来定。
浏览量:2
下载量:0
时间:
文秘写作在教学过程中应贯穿写作能力与职业技能两条主要线索,既要强调文秘写作与其它文体写作的不同,认识文秘职业的独特性,从文秘职业出发进行写作教学,同时由于写作过程的综合性特点,又要强调学生具备一定的观察能力、搜集信息的能力、社会调查研究的能力、逻辑思维能力和语言表达能力。写作是文秘的工作职责之一,下面是关于聘请书写作格式范文,仅供大家参考。
1、标题。在正中写上标题“聘书”或“聘请书”字样;被聘请者的姓名、称呼,有的在开头写明,有的在正文中写明。
2、正文。一般要交代聘请的原因和请去干什么事情,但也有的不交代聘请的原因,只说明聘请去干什么事情或担任什么工作。正文中还可写上对被聘者的希望。
3、结语。一般要写上表示敬意和祝颂的话。
4、署名。另起一行,在右下方写上聘请单位的名称,在署名下边书写年、月、日。
浏览量:3
下载量:0
时间:
文秘写作在教学过程中应贯穿写作能力与职业技能两条主要线索,既要强调文秘写作与其它文体写作的不同,认识文秘职业的独特性,从文秘职业出发进行写作教学,同时由于写作过程的综合性特点,又要强调学生具备一定的观察能力、搜集信息的能力、社会调查研究的能力、逻辑思维能力和语言表达能力。写作是文秘的工作职责之一,下面是关于文秘公文写作技巧范文,仅供大家参考。
第一招,明字诀。公文与其他文体不同,它带有极强的政治性和政策性。它既不是小说,也不是散文,不能随意“任性”而为。公文有多种,但首先一点就是要符合政令。它所传达或代表的方针政策、法规约束,必须协调一致。所以,这就要求我们必须具有一定的政策理论水平,对党和国家的方针、政策、法规能够了然了然于胸,明明白白,正确的政治思想才能保持正确的政治方向。如同练武一般,要明白练功的目的是强身健体,除暴安良。如果想要为非作歹,那练功只能走火入魔,害人害己。
第二招,积字诀。练武讲究套路,学习套路的过程就是积累和沉淀的过程。写公文也要讲究套路,必须要行文周整,格式规范。且抛开套路不说,日常积累对我们写作也非常重要。但凡是有真知灼见的好文章,无不是对大量素材的筛选和应用。学无止境,积累也无止境,想要泉水清澈如许,就一定要有源头活水。肚子里没有货,想要写好文章,那就真成了“无米之炊”。练武需练基本功,写作也要靠积累,只有在生活和工作中认真学习和积累,才能做到“胸藏万汇凭吞吐,笔有千钧任翕张”。
第三招,思字诀。积累的材料如一堆干柴,须有灵感的火花才能点燃;积累的材料如一堆花粉,须经蜜蜂的酝酿才能成蜜。因此,思考的过程就是对材料的整理取舍融合的过程,构思成熟自然会下笔成文。同时,思考也是删繁就简,与人不同的过程。一味的陈列繁复的字句,没有一点独到的观点和韵味。犹如花拳绣腿套路一般,中看不中用。如果说“积字诀”让你把书由薄读厚,“思字诀”则使你把书由厚读薄。以简驭繁,凝练深邃,才是佳作。“吟安一个字,拈断数只须”是思考的过程,“为求一字稳,耐得半宵寒”更是思考的过程。砍掉陈词滥调,以纠冗长繁复,删掉浮夸绚丽,力求朴实无华。挖掘新的内容,提炼新的观点,从自己思考得来的角度出发,这样才能避免“言而无文,行而不远”。
第四招,练字诀。练功练功,一日不练三日空。如果想有一身深厚的内功,必须不停不断的练习。写作也是同一个道理,逆水行舟,不进则退。积累如果是吃饭的话,思考就是消化的过程,那么动笔练习自然就是产出结果。勤动笔,就是灵感来时的“存储器”;勤动笔,就是增强食欲的“开胃菜”;勤动笔,就是帮助消化的“健胃片”。常时间不写,突然要动笔,这时就会“心里空荡荡,笔下白晃晃”。正所谓“事不经不懂,笔不练则疏”。
明理、厚积、多思、勤练,这几招看似简单,实则不易。一个武功高手,内外需要兼修。写作也如此,学习积累是内功,练笔写作是外功。只要我们坚持内外兼修,渐渐的,文章由短写长,文字由繁入简,写作就进入了新的境界,我们也就成了行家里手。
二
写好文章就犹如做好人一样重要。能写出一篇优秀的网评文章,并不是一蹴而就的,需要一朝一夕的积累和用心的感悟,这个过程可能是辛苦的,如若我们能淡看辛苦,在圆满写完结尾的那一刻,心里肯定是喜悦的,甜蜜的。
写文章如同做人,切忌华而不实,要谦虚且有内涵。不难发现,越是能打动读者、产生共鸣的文章,越是贴近生活,从身边真实的小事写起。写文章的确需要有优美的词句来恰当抒发作者的感情,切忌整篇文章都用华丽的辞藻堆砌而成,看起来“高大上”,实则是棵“空心树”,缺乏内容,很难拉近与读者的距离。一个谦虚且有内涵的人,才能吸引他人,得到他人的尊重,写文章也是同样的道理,要虚心地向大家学习,向身边人学习,用真实质朴的语言体现内涵,凸显感情,才能写好一篇文章。
写文章如同做人,切忌夸夸其谈,要谨慎且有思想。在互联网高速发展的今天,网络信息以惊人的速度传向世界各地,我们作为网络舆论制造的主体,有言论自由的权利,同时也应该有引导舆论积极健康发展的责任心。我们受过高等教育,在党的高尚情操陶冶下,我们应该有自己的思想,知道正确的方向,秉持严谨的态度,切忌在公共场合哗众取宠,夸夸其谈,忽略事实。我们发表的每一条言论、每一篇文章都应该传播正能量,能体现新时代年轻人积极向上的主流思想,而不是随波逐流。
写文章如同做人,切忌虚无飘渺,要踏实且有感染力。说话是人表达思想感情最直接的方式,写文章是另一种最重要的方式。同样的意思换种表达或许更易于他人接受,达到更理想的效果,试想一篇文章如果没有主心骨,语言表达闪烁其词,读完之后却不知道中心思想,这样一篇不接地气的文章,显然是没有感染力的。工作中,一个踏实肯干的人,能得到大多数人的认同,所以,就如同做人一样,写文章也要脚踏实地,逐字逐句、一段一段认认真真谋篇布局、反复推敲琢磨,远离假大空,融入真情实感,这样的文章读者才能读出诚意,受到感染,写作的意图也就能完整体现了。
冰冻三尺,非一日之寒,写好文章需要知识的沉淀和丰富的阅历,正如这做人一样,漫长的一生,是一个“活到老,学到老”的过程,总是在实践中不断成长。我相信“保剑锋从磨砺出,梅花香自苦寒来”,我一定能写好文章,做好人。
浏览量:2
下载量:0
时间:
文秘写作在教学过程中应贯穿写作能力与职业技能两条主要线索,既要强调文秘写作与其它文体写作的不同,认识文秘职业的独特性,从文秘职业出发进行写作教学,同时由于写作过程的综合性特点,又要强调学生具备一定的观察能力、搜集信息的能力、社会调查研究的能力、逻辑思维能力和语言表达能力。写作是文秘的工作职责之一,新闻写作也是其中之一,下面是关于文秘新闻写作心得感想范文,仅供大家参考。
新闻与文学,对于我们来说并不陌生,新闻是以事实为基础,给人一种信息传递的快速感;而文学是以想象力为支撑,给人一种生活中的立体美感。新闻与文学同为艺术,很多人因为爱好文学而走上新闻写作岗位;也有很多人因为长期从事新闻工作而走上文学创作之路。
我是一名文学爱好者,同时也是一名基层通讯员。基于我对新闻写作的浅显理解以及培训班中老师们精彩的讲解,使得我对新闻写作与文学知识的积累有了更为全新的认识。二者对我来说犹如左手和右手,一手写新闻,一手搞文学,二者兼顾,相得益彰。如果说的更形象一点,新闻与文学对我来说就像是白天和黑夜,白天给了我充实的工作,夜晚给了我自由的想象。
新闻是将新近发生的具有典型性的、真实性的事实进行报道;而文学,是来源于生活,并将生活艺术化,组合成文章的一种形式。老师们在授课中讲到,新闻写作要紧紧围绕事实中心去交代,新闻写作有金字塔式的写法,也有倒金字塔的写法。而在文学创作方面也讲究顺序和倒叙,二者有着相似又熟悉的感觉。同时我们在读新闻通讯中也常常能发现,新闻通讯中的场面叙述也流露出作者的散文和小说写作的基本功。新闻通讯中哪些地方该重点介绍,哪些地方该一笔带过,这些方面也常常离不开文学创作的基本常识。
写到这里,心中突然有种想要将新闻写作与文学艺术相结合的冲动,就像战地记者魏巍那样用文学的手法完成一篇完美的通讯《谁是最可爱的人》。而在我的理解中,如果报刊与媒体相当于一座庄园,新闻通讯就像是庄园里的花花草草,而文学知识则是流淌于庄园里的河流水泊。丰富的文学知识与深厚的文学创作功底会为庄园里的花花草草注入里生命的力量,繁衍出美不胜收的灿烂景色。
而在现实中,我们会发现,好多报刊杂志办成了一种文件式的感觉,新闻稿件读起来就像咀嚼压缩饼干那样,缺乏美感,难以引起读者的兴趣与共鸣。当我们读到朗朗上口的新闻通讯时会发现,它们一般都融合着文学创作的美感,即新闻写作的散文化。比如新闻通讯《百万雄师过大江》,是将散文的美感融入到新闻写作当中,让大家读起来不仅有一种立体的美感,还能从中体会到新闻写作与文学知识有机结合的魅力。
新闻写作需要文学知识的积累,而文学知识的积累也是对新闻写作的一种高度负责,同时新闻写作与文学知识的交融就像是鲜花与绿叶,相互衬托,给人美不胜收的感觉。短短的三节新闻培训让我收获颇丰,就新闻培训中的浅显体会愿与同学们分享与共勉,期许我们的新闻会写得更潇洒一些,我们的读者人群会更多一些,我们的稿件刊用率会更高一些。
浏览量:2
下载量:0
时间:
写作能力是秘书的基本功。秘书为领导服务的水平以及自身在办公室的影响力,主要体现在文字水平的高低上。所以,扎扎实实提高文字基本功是秘书的第一要务。个人认为,提高写作水平,关键要做到四勤,即勤用眼,勤留心,勤动手,勤用脑。写作是文秘的工作职责之一,下面是关于怎样提高写作能力,仅供大家参考。
一些在领导身边工作的秘书人员很想提高自己的写作能力,却不知从何起你好。其实路就在自己的脚下重要的勇于在实践中摸索。
一、 克服障碍,勇于实践。有些秘书人员,总是把写文章看得高不可攀,往往是望文兴叹。长以往,形成了一种心理的恶性循环:越怕写越不愿写越不写就越不能提高。一个人如果不能克服这种心理障碍,那么他的能力一也不会提高。要克服这种心理,关键是对写作要有一个正确的看法,要树立信心。写文章不是高不可攀。高深莫测的事,也不是轻而易举的事,只要为之付出艰苦的努力,文章一定能写好。
二、 学好理论,打牢根底。文章要有理论、有思想写文章的就必须有炉高的理论素养。但是,在现实生活中,有些秘书人啁邓认识不到这一点,他们轻视理论知识,不愿把时间花在学理论上。秘书人员作为协助领导工作的参谋助手,是贯彻执行党的路线方针、政策的一支骨干力量,写东西时必须对所掌握的工作进行战略的、全局的思考,不能仅仅着眼于一枝半叶:必须对当前改革和发展中出现的新情况、新问题,进行深层次的理论分析和概括,加强工作中原则性、系统性、预见性和创造性。与此同时,还必须帮助广大群众对在新形势下出现的许多重大的理论问题和现实思想做出正确回答。要达到这个要求,而对马列主义、毛泽东思想和邓小平理论等一知半解或知之不多,是根本不行的。实际上学习理论的过程,就是加强政治第三性提高辨别是非能力的过程,也是提 高写作能力的过程。
三、 多看书报,积累资料。多看文件,多读报纸,至少有两个好处:一是能从中学习他人的写作经验和写作技巧。我们在看书读报时,对重要的、好的文章要进行认真思考和分析,它好在什么地方?怎样立意?怎样布局谋篇?怎样开头和结尾?有哪些不足?假如换我来写篇文章又会是怎样?这样一对照,差来了,自己也就慢慢有提高。二是可以从中获取信息,积累各种资料。具体的积累方法是:第一、把自己一本书后的最大感想和书中好语句记录下来,把它抄在本子上。第二、把报纸上的有关资料,如好的观点、标题、典型事例及数据等你感兴趣的东西记下来,条件许可时,最好剪集成册,分类保存。三 是把自己在日常工作、下基层调查和同他人聊天时所生的好想法,他人的好语言记下来。如此长久坚持下支对写作文章是大有好处。有人说,写文章的过程就是收集、。整理、研究和利用资料的过程。这话是有一定道理的。
四、 熟悉情况,吃透两头。在实际 工作中,秘书人员写最多是起草文件,工作总结,经验材料等。其写出来的东西质量高低,使用价值的大小。很大程度上取决于能否把领导的有关指示精神与本单位的实际情况有机地结合起来,从 鸸菜成具体的、有针对性的、指导性炉强的材料。为什么有的秘书人员接受了领导交给他的写作任务时,感到没有东西可写或者写不去,即使写下去了也是干巴巴的,内容空洞,思想贫乏,只见骨头不见肉呢?其中个很重要的原因就是级的精神和下头情况没吃透。因此,写文章之前,首先要吃透上级的关文件精神和本单位领导的工作意图。其次,熟悉本层次的实际情况,做到心中有数,增强文章的针对性。总之,只有吃透两头,做到既知其然又知其所以然,才能在写文章时有较高的立意,写出的文章也才有一定的指导意义。
五、 勤于练笔,熟能生巧。作中,常常听到一些人说;我们想是想写,就是不知道从何写起。笔者认为,不妨从写火柴盒、豆腐块,整理会议记录、情况映做起,做到勤写、多写且长期坚持下去。有道是:常看胸中有本,常写笔下生花。秘书人员在作之余,可以进行新闻和其他体裁的写作练习。对这一点,有些不以为然,看不起写火柴盒 、豆腐块。其实,练练写火柴盒、豆腐块是很有好处的。通过练笔可以锻炼我们的思维能力,开阔知识面,提高文字个笨蛋能力。总之,只要坚持勤于练笔,不怕失败善于总结经验教训,向有经验的同行请教,自己就会慢慢入门,写作水平就一定能在日不见长中逐渐得到提高。
一个称职的秘书,必须具有运筹能力、办事能力、调查研究能力、组织协调能力、交际能力、文字表达能力和操作现代化办公设备的能力。其中文字表达能力是最重要、最基本的,也是实现其它能力的基础。可以这么说,文字表达能力是秘书工作人员的基本功,是看家的本领。因此,对于秘书来说,认真学好文秘写作,努力提高文字表达水平,是十分重要和不容体制忽视的。 那么,怎样才能有效地提高文秘写作的能力呢?具体说来,主要应注意以下几点:
首先,要端正态度,培养兴趣,自觉学好文秘写作。 不管干什么事情,必须有正确的态度和浓厚的兴趣,这样才有动力,才乐于去干,并想方设法去把工作干好。学习文秘写作也是如此。写作,是一种复杂、精细的精神生产,是一项十分严肃而艰苦的创造性脑力劳动,决不是轻而易举、一蹴而就的事情。文秘写作是党政机关、人民团体、企事业单位处理公务、实现指挥、组织管理和协调工作的工具,在四化建设中所的地位十分重要。我们应该充分认识秘书工作和文秘写作的意义,从党和人民的利益出发,从更好地胜任秘书工作出发,抱着对人民、对工作高度负责的精神去对待写作。美国著名的未来学家约翰·奈斯比特在《大趋势改变我们生活的十个新方向》一书中指出:在工业社会向信息社会过渡中,有五件‘最重要’的事情应该记住,而其中的一件就是:在这个文字密集的社会里,我们比以往任何时候都更需要具备最基本的读写技能。这里所说的‘读写技能’,
首先就是足以应付日常工作和生活所需的写作能力,也就是应用写作能力。与此同时,我们还要培养学习文秘写作的浓厚兴趣,变被动为主动,变要我学为我要学。爱因斯坦说过:热爱是最好的老师。对写作有强烈的责任感和浓厚的兴趣,热爱写作,热爱到忘我、痴迷的程度,衣带渐宽终不悔,为伊消得人憔悴,每有会意,便欣然忘我,乐此不疲,如饥似渴地去钻研,废寝忘食地去琢磨,持之以恒,锲而不舍,这样就一定会学得好,学得入门,就会不断地取得进步。 其次,学习文秘写作基础知识,借鉴优秀作品。 提高写作水平,到底有没有秘诀?我们的回答是否定的。
那么,写作有没有规律可循、方法可求呢?我们的回答又是肯定的。任何事物都有其内在的必然联系即规律性,任何物质产品和精神产品的制作都有其特有的方法和技巧,写作当然也不例外。那种认为写作无规律可循、没有什么理论的观点,是唯心主义不可知论的反映,是完全站不住脚。
古人说:写作无秘雇作文有要道,定体则无,大体须有,这种认识是符合辩证法的。我们所学的文秘写作教材,就是前人文秘写作经验的科学总结,就是揭示文秘写作的一般规律、引导人们掌握文秘写作方法和技巧的理论。 要提高文秘写作能力,还应有意识地选读一些范文,以作借鉴。鲁迅说过:凡是已有定评的大作家,他的作品,全部就说明着‘应该怎样写’。
只是读者很不容易看出,也就不能领悟。巴金也曾谈到阅读对写作的密切关系时说:读多了,读熟了,常常可以顺口背出来,也就能慢慢地体会到它们的好处,也就能慢慢地摸到文章的调子和作法了。但我们也应认识到:读书是读他人之书,作文是作自己之文;借鉴只是从中汲取营养,经消化后成为自己的东西;而不是生搬硬套,模仿抄袭,依葫芦画瓢。 最后,要勇于实践,坚持多练习、多修改。
看了文秘怎样提高写作能力
浏览量:4
下载量:0
时间:
会议简报( conference bulletin; brief reports on conference proceedings )是会议期间为反映会议进展情况、会议发言中的意见和建议、会议议决事项等内容而编写的简报。本文是文秘会议简报写作的要点,欢迎阅读。
会议简报是指在会议期间为反映会议进行情况,包括与会人员在讨论中提出的意见、建议以及会议的决定事项而出的简报。
会议简报的作用,一是便于领导了解情况,推动会议深入进行;二是沟通情况,交流经验;三是便于备考存查归档。
整理会议简报,要注意做到一快、二简、三精、四准。
快,即速度要快。会议简报,一般是头天讨论的情况,第二天一早就要印出发到与会人员手上。这就要求编写简报必须是“快枪手”,要练就一手一两小时便能整理出一份简报的功夫。要讲究方法,采写人一边听会议讨论,一边分析、归纳。一脑两用,脑海中已经有了简报的框架。
简,即文字简洁。顾名思义,简报要简,通常是“千字文”,这就要求文字要干净、简炼,不说废话。写法上要开门见山,直截了当。
精,材料要精。简报内容要紧紧围绕会议的中心议题,把代表们的主要认识、意见和建议反映出来。要扣紧主题,突出重点,抓住典型,提炼概括。一般的情况就可以省略不用了。 准,内容要准确。会议简报反映情况一定要真实、准确,简报反映的观点材料,必须是与会人员讲的,要忠实于原意,一些关键的词句,甚至要求是原话。 会议简报的编写方法大体有以下三种方式:
(1)综合式。通过对发言的内容进行综合分析,梳理归纳成几个问题来编写。
(2)报道式。采用新闻报道的形式,先将要反映的内容用几句话概括成一段导语,然后逐段从不同侧面报道讨论的内容。一般可按重要程序依次排列。
(3)摘要式。将发言人的发言摘要整理成简报。可一期摘发一个人的发言,也可同时摘发几个人的发言。
浏览量:2
下载量:0
时间:
毕业论文写作是高等学校英语专业教学计划中一个不可缺少的组成部分和实践性环节,作为大学生,要认真学习好毕业论文的写作技巧。下面是读文网带来的毕业论文写作心得,希望对大家有帮助。
说那么快,悄无声息的,这个学期的一半过去了,论文写作课也即将结束了。
在写学习心得之前,跟同学们聊起论文写作,不知道怎么说起的,我们说起了高考作文。高考作文的那些三段论套路,文章要什么“凤头、猪肚、豹尾”,怎么当初的八百字要那么痛苦地挤出来?上到大学,随便来篇文章,自由发挥,轻而易举。
我想在生活上,懂得怎么写文章的人也应该是一个很懂的生活的人,而且他们的生活一定很多姿多彩,他们的人生阅历一定很丰富。在学术上,懂得怎么写好论文的人,必定是一个学识很渊博,思想很深刻,善于思考的人。
说说论文写作课所获吧。
记得季老师刚上这门课的时候就说过我们的一些师兄师姐上完了这门课也不知道讲了什么学到了什么。我个人的实际情况不是这样的,论文课还是有一些收获的,自己以后在写毕业论文时候,起码知道要在内容与格式这两大方面抓好。写一篇好的毕业论文不容易啊,必须要认真对待,这也是我们积极学习的态度的表现。
季老师谈及论文写作,给我印象最深的就是他多次强调论文的格式。的确,先不说我们的内容是否新鲜,观点是否创新,建言献策是否有建树,但论文格式的要求是基本的要求,是每个同学都可以做好的。这些基本的格式我们要做好弄好,基本的东西没做好,留给指导老师给你做,这合适吗?季老师说他自己指导学生论文的时候,老对学生说的一句话就是“拿回去吧”。我想老师要同学们拿回去的不仅是修改格式的论文,更重要的是把对待毕业论文写作那种懒散不认真的态度拿回去吧。今天面对的是一篇本科论文,明天也许就因为这种不认真的态度而错失很多很好的工作机会。细节决定成败,虽然这是一句话很俗套而且老生常谈,但是十分有理。
老师说到现在的大学生论文没有多少是有水平的,想找几篇优秀的论文给大家学习学习都没有。这是一个不争的事实,现在大学生可是量多质差,真正好好学习自己本专业的同学很少。大家都忙于考取各种证书,考取英语四六级,忙于各种社会实践,对于自己的专业学习就只是浅尝辄止了。所以写出一篇高质量的毕业论文想必是一件很困难的事情,因为我们肚子里没有真材实料,脑子里没有创新的灵感。
课上老师给我们点评了一些师兄师姐的毕业论文,印象中听到老师批评的声音较多,没有哪些赞许的话。季老师是一个会说真话有要求的人,老师的评价是中肯的。学习这些论文,连我这个没什么水平的都看出一大堆问题。最为印象深刻的就是师兄师姐的论文几乎是一大片的文字,图表数据分析极少,似乎空口说白话。有图有表有真相,没证没据,太难令人信服,文章太苍白了。论文最后是文献,文献资料来源太少,缺少精确。有的甚至来源我们教材,这是不太可取的。论文的参考文献很重要,想写好一篇论文,必须要广泛地阅读大量的文献资料。
在展示一些论文也包括他自己的,老师强调得比较多的就是论文要勾勒架构、建立模型。老师的论文水平非常高,我们望尘莫及,能看懂就已经不错了。冰冻三尺,非一日之寒,老师在学术上面的造诣必定源自于长期不断的学习与积累。
季老师建议我们多去图书管的阅览室走走,多阅读网上一些名人博客,多去收集一些学习资源。在大学,有老师能够指引我们要懂得如何去学习,比在课堂上授予我们更多的专业知识更重要。记得上一年级的时候,李春英老师给我们上《计算机应用基础》这门课,李老师说了一句话,我现在还记着:“关于大学的学习,你收获的应该是学会学习!”学会学习,在大学,这是很弥足珍贵的。授之以鱼,仅供餐饱;授之以渔,则一生受用。我想学会学习也就是这么一个道理吧。
课上向老师提过这么一个问题:怎么样才能够让写出来的文章有深度有思想有意义而且深刻的?老师的回答很认真很全面,我是有收获的,但是老师很谦虚,最后还说:“不知道有没有很好地回答你的问题?”老师学识渊博,但他对学生不骄不纵,低调的为人与谦虚认真的态度让我打心底里尊敬他。想想我们身边有些人吧,学识甚少眼光短浅,还骄傲自大,把自己摆在高高在上的位置。说实在的,万千世界,每个人都是那么的渺小,没什么好骄傲的。每个人都觉得自己不一样,其实大家都一样的,把自己高高的姿态放下,多多向身边的人学习。
#p#副标题#e#
浏览量:3
下载量:0
时间:
Java语言是编程语言史上的一个里程碑,在此基础上形成的Java Applet技术是综合了计算机图形学、多媒体技术、网络技术的新技术,近年来在很多领域得到了快速的发展和应用。本文是读文网小编为大家整理的java的毕业论文范文,仅供参考。
XX 大 学
毕业设计(论文)
题目: 基于Java技术的网上交易系统的开发
学 院:
专 业:
班 级:
学 号: xxx
学生姓名: xx
指导老师: xx
2009年6月9日
摘 要
随着信息高速公路的建立,Internet的普及,网络技术的迅猛发展,人类社会已经进入了一个信息化社会。
电子商务指利用简单、快捷、低成本的电子通讯方式,买卖双方通过网络进行各种商贸活动的一种商业交易模式。随着互联网的发展,以及人们消费观念和生活方式的改变,这种新型的商业模式逐渐融入了人们的生活中。通过企业的门户网站,人们可以足不出户的寻找自己所需的物品,通过对不同虚拟商城的访问,“顾客”可以找出性价比最高的商品,自己有极大地选择空间;通过下订单,你可以很快得到自己想要的物品,这给顾客节省很多时间和精力;对于厂家来说,可以极大地降低库存风险,可根据客户需要,按需采购和生产,大大地提高了效益。
本毕业设计的内容是设计并且实现一个基于web技术的在线交易系统。系统主要以j2EE作为开发基础,使用了struts+spring+hibernate等多种协议或技术,用eclipse作为开发工具,以Macromedia公司的Dreamweaver作为界面美化工具。基本实现了网上交易系统应有的主要功能模块,包括:管理员的登录,管理和维护;用户注册、登录、注销,个人信息的查询、修改;商品管理,购物车管理,订单管理。该系统界面简单、操作方便,容易维护。
关键词:电子商务 j2EE struts + spring + hibernate
Development of an Online Trading System Based on Java Technology
Abstract
With the establishment of high way of information, the popularization of Internet and the rapid development of network technology, human society has entered a society of information.
E-commerce is a new business transaction, through which both buyers and sellers can use a simple, fast and low-cost means of electronic and communication. With the development of the Internet, and people's consumption idea and the way of life changing, this new business model has gradually integrated into people's lives. Through the portal site of enterprise, people can look up the goods which they required without going out; through the different virtual mall visit, people can find the most cost-effective products, and they have much self-choice; through orders, people can find the things which they need, and quickly get the products which they ordered. This new business modle can save a lot of time and energy for custormers, and greatly reduce inventory risk of manufaturers. The manufactures can procure and produce according to customer needs, this was called on-demand procurement and production, which greatly improved the efficiency.
The subject of this graduation project is designing a web-based online trading system. This system mainly uses j2EE as the basis of development, and also use the struts + spring + hibernate technologies and other orders. This project use eclipse as the development tools, and Macromedia's Dreamweaver as the interfaces landscaping tools. The basic functions of an online trading system have been implemented, which include administrator login, management and maintenance; user registration, login, write-offs personal information enquiries and amendments; commodity management, cart management, order management. Interface of the system is simple, it can be used and maintained easily.
Key words: E-commerce j2EE struts + spring + hibernate
6
目录
摘 要
Abstract
第一章 引言
1.1 课题背景
1.2 课题目的和意义
1.3 本文结构
第二章 系统应用的关键技术
2.1 JSP技术介绍
2.1.1 JSP的概述
2.1.3 JSP的强势与劣势
2.1.4 JSP与ASP的比较
2.2 Java组件JavaBeans
2.2.1 什么是JavaBeans
2.2.2 JSP与JavaBeans的关系
2.3 J2EE概述
2.4关于Struts
2.4.1 Struts简介
2.4.2 Struts的主要功能
2.5 关于Spring
2.5.1 Spring简介
2.5.2 为什么需要Spring
2.5.3 Spring带给我们什么
2.6 关于Hibernate
2.6.1为什么引入hibernate
2.6.2使用Hibernate的好处
2.6.3 Hibernate的工作原理
2.7 Mysql
2.7.1 mysql的特点
2.7.2 mysql的安装和配置(部分截图)
2.8 Tomcat服务器
2.8.1 Tomcat 服务器简介
2.8.2 Tomcat的特点
2.8.3 Tomcat的优势
2.8.4 Tomcat服务器的安装和配置
小结
第三章 系统需求分析和总体设计
3.1 系统功能需求
3.2 系统角色及其功能分析
3.2.1 系统的3个角色:
3.2.2 系统角色的功能
3.3 总体设计思想概述
3.4 数据库设计
3.4.1 E-R图
3.4.2数据表的设计
3.5 系统的类设计
3.5.1 DAO类设计
3.5.2 POJO类设计(部分)
3.5.3 过滤器类设计
3.5.4 监听器类设计
3.6系统的用例图
3.6.1 总体用例分析
3.6.2 用户管理用例分析
3.6.3 购物车管理用例分析
小结
第四章 系统的详细设计
4.1 数据库与POJO映射的实现
4.2 主要模块的设计说明与界面
4.2.1用户管理模块
4.2.2购物车管理模块
4.2.3 定单模块
4.3 系统的测试
小结
第五章 总结与展望
5.1 工作总结
5.2 后续工作展望
参考文献
附录
致谢
第一章 引言
1.1 课题背景
随着当今世界进入信息时代,Internet的飞速发展和在全球的普及给人类生活带来革命性的改变。Internet将传统意义上的物理空间转变成电子空间,把人们带入了一个网络社会中。网络时代的到来,带给人们的不只是快捷、方便,它带来的是划时代的进步。在网络大家族中,电子商务则是一个热点,它的发展速度之快远远超过我们的想象,普及速度之快令人难以置信。我们完全有理由相信,全球性的电子商务热潮必将一浪高于一浪[1]。
电子商务一个最基本体现就是电子购物网站,从一定程度上讲它就是网上超市,也就是一种网上交易。“网”字意味着它具有信息时代的快捷方便等特征。事实上电子商务的出现,给消费者的地位,消费观念带来了重要的变化。网上交易系统正是应这种变化而悄然崛起,并以惊人的速度发展着。通过网上交易系统,人们可以足不出户的寻找自己所需的物品,通过对不同虚拟商城的访问,“顾客”可以找出性价比最高的商品,自己有极大地选择空间,通过下订单,你可以很快得到自己想要的物品,这给顾客节省很多时间和精力,对于厂家来说,可以极大的降低库存风险,根据客户需要,按需生产和采购,大大的提高了效益。
1.2 课题目的和意义
自从电子商务出现在人们的视野中,电子商务就在全世界范围内受到了格外的关注,并得到了迅速的发展。从实用角度看,目前电子商务网站的普遍存在是购买者难以找到所希望购买的商品甚至用户在耗费很大的经历与时间后即使找到了自己想要的产品,最后却由于各种原因而放弃购买。很多报道指出,推销商们普遍对目前的网络行销感到失望,尽管如此,电子商务无疑是目前最好的在线商品展示的媒体和工具。然而,网上产品展示的目的不仅仅是展示产品,而更重要的是通过让客户更多地了解产品而提高产品的购买率。因此,电子商务目前所面临的挑战之一就是网站的设计,如何使得网页能够有效地展示自己的产品,同时方便用户的使用,使用户以愉悦的心情选购称心如意的商品。
本系统的目的和意义就是应上述挑战而尝试为用户提供一个操作简单方便的网上交易系统。利用本系统,用户可以自由地浏览商品,注册成为网站会员,选择商品加入自己的购物车,而后生成订单,实现网上购物。
1.3 本文结构
本文共分五个章节,系统地阐述了系统开发的全过程。
第一章,主要介绍了开发的背景、目的和意义。
第二章,主要介绍了本系统所用到的关键技术和工具,为下一步的设计的设计奠定基础。
第三章,主要对系统进行需求分析并进行总体设计。需求分析阶段通过分析系统的功能模块的划分以及角色的划分,为系统的总体设计提供依据。总体设计阶段通过对数据库、过滤器、监听器、和实体类的设计,以及各个模块用例图的描述,形成了开发的整体思路。
第四章,主要介绍了主要模块的设计与实现,并给出关键源代码和最终的效果图。
第五章,主要是对这次毕业设计的总结和对后续工作的展望。
第二章 系统应用的关键技术
2.1 JSP技术介绍
2.1.1 JSP的概述
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,类似于其他技术标准,如ASP,PHP等,主要用于开发动态网页内容。
JSP是新一代的动态内容编程技术,它继承了Java技术的“一次编写,随处运行”的特性,允许Web开发人员开发和维护与平台无关,信息丰富动态的Web页面,包括HTML,DHTML,XHTML和XML,它能使Web开发人员轻易搭建网络平台,建立起功能强大的Web网站。JSP可以把用户界面从内容层次中分离出来,使得Web开发人员不必修改在底层的动态内容,就可以修改整体的页面布局。
2.1.2 JSP的运行机制
JSP文档被复制到Web服务器的文档目录中。当有人请求这个文档时,服务器识别出这个带有.jsp扩展名的文档,并意识到需要做特殊处理。第一次请求这个文档时,它被编译成一个servlet对象,并存储在内存中,然后输出内容回送给发出请求的客户机。第一请求之后,只要有请求到来,服务器将进行检查,看看这个文件是否做过改动,如果没有变化,服务器调用先前编译过的servlet对象。
JSP请求的步骤[2]如图2-1所示。
(1)客户机请求一个JSP页面。
(2)JSP引擎编译该JSP成一个servlet。
Web
浏览器
JSP页面
生成的servlet
编译的servlet
Web服务器
2.第一次编译
3.第二次编译
1.请求
4.响应
图2-1 一个JSP的请求步骤
(3)生成的servlet被编译并装载。
(4)编译的servlet服务请求并把一响应发送回客户机。
JSP主要是针对Java程序处理不熟悉的人设计的。与Servlet相比,JSP有如下两个优势:方便与HTML混合;在开发、测试方面比Servlet方便。
2.1.3 JSP的强势与劣势
JSP的强势:
(1)可移植性。JSP是用Java开发的,因此它是可移植的,可以一处编写,随处运行,支持多平台。
(2)有效性。JSP的初始化代码仅在Web服务器第一次加载时执行一次。一旦加载,在处理一个新的请求时,只须调用一个新的服务方法。与处理每个请求都要全部加载一个完整的可执行程序相比,这是一个相当有效的技术。
(3)强大的可伸缩性和可扩充性。它能够在面向对象的语言(Java)中进行开发,并可以在现有对象基础上进行扩展,形成新的对象,从而更好地满足用户的需求。
(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)Java Servlet是一种开发Web应用的理想框架。JSP以Servlet技术为基础,又在许多方面作了改进。利用跨平台的JavaBeans组件,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。
JSP的劣势:
(1)为了跨平台的功能,为了极度的伸缩能力,极大的增加了产品的复杂性,Java系统中包括JRE,JDK,J2EE,EJB等多种产品,这就需要大量的学习和培训才能掌握它们,将它们有效地搭配在一起,灵活地加以运用。
(2)Java的运行速度快是由于用户将class常驻内存,这样使用的内存空间就比较大。另一方面,它还需要硬盘空间来存储一系列.Java文件和.class文件以及对应的版本文件。
(3)JSP只有对Java相当熟悉的人才能用得很好。
(4)JSP程序调试困难。
2.1.4 JSP与ASP的比较
JSP与ASP(Active Server Page)两者都是常用的动态网页技术,也都是可以嵌入HTML中的程序,但两者是有着本质的不同,主要从以下几个方面对其进行比较:
(1)Web服务器的支持:大多数通用的 Web服务器如:Apache、Netscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Personal Web Server可以支持ASP。
(2)平台的支持:JSP具有平台独立性,只要是一般的Java程序可以运行的平台,都支持JSP程序。Windows平台可以很好的支持ASP,但ASP对于基于Win32逐渐模型的依赖,使得它难于一直到其它平台上。
(3)组件模型:JSP是建立在可重用的、跨平台的组件(如:JavaBeans、Enterprises JavaBeans和用户定制的标签库等组件)之上的,而ASP使用的是基于Win32的COM组件模型。
(4)脚本语言:JSP可以使用Java编程语言或JavaScript作为脚本语言,而ASP使用VBScript或Jscript作为脚本语言。
(5)安全性:JSP使用Java安全模型,而ASP使用Windows NT的安全结构。
(6)与Access数据库的连接:JSP使用JDBC建立与Access数据库的连接,而ASP对Access数据库使用Data Active Objects。
(7)用户定制的标签:JSP可以使用用户定制标签库进行扩充,而ASP中没有用户定制标签库,ASP是不能扩充的[3]。
2.2 Java组件JavaBeans
2.2.1 什么是JavaBeans
JavaBeans事实上有三层含义。首先,JavaBeans是一种规范,一种在Java(包括JSP)中使用可重复使用的Java组件的技术规范。其次,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的.java文件,在绝大多数情况下,这应该是一个public类型的类。最后,当JavaBeans这样的一个Java类在我们的具体的Java程序中被示例之后,我们有时也会将这样的一个JavaBeans的实例称之为JavaBeans[4]。
2.2.2 JSP与JavaBeans的关系
使用JSP技术,Web页面开发人员可以使用HTML和XML标识来设计和格式化最终页面。使用JSP标识或者小脚本生成页面上的动态内容。生成内容的逻辑被封装在JSP标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。核心逻辑封装在标识和Beans中,可以方便页面设计者编辑和使用JSP页面。
在服务器端,JSP引擎解释JSP标识和小脚本生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库),并且将结果以HTML(或XML)页面的形式发送回浏览器。
绝大多数JSP页面依赖于可重用的跨平台的足见(JavaBeans或者Enterprise JavaBeans组件)来执行应用程序所要求的复杂的处理。这样的好处是开发人员能够共享和交换执行普通操作的组件,加速了总体开发过程。因此,基于Web的较为复杂的应用程序(如电子商务网站或网上MIS),JSP的复杂架构必须由JavaBeans达成。
2.3 J2EE概述
J2EE(Java 2 Platform Enterprise Edition)是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE(Java 2 Platform Standard Edition)和适用于企业级应用的J2EE(Java 2 Platform Enterprise Edition)。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。为了推广并规范化使用J2EE架构企业级应用的体系架构,Sun同时给出了一个建议性的J2EE应用设计模型:J2EE Blueprints。J2EE Blueprints提供了实施J2EE企业级应用的体系架构、设计模式和相关的代码,通过应用J2EE Blueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。J2EE Blueprints是开发人员设计和优化J2EE组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源。
J2EE的优势主要有以下几点:
(1)高效的开发: J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间件供应商提供以下这些复杂的中间件服务:状态管理服务 -- 让开发人员写更少的代码,不用关心如何管理状态,这样能够更快地完成程序开发。
(2)持续性服务 : 让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。分布式共享数据对象CACHE服务,让开发人员编制高性能的系统,极大提高整体部署的伸缩性。
(3)支持异构环境: J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订整个方案所需的费用。
(4)可伸缩性:企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。
(5)稳定的可用性: 一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。这是实时性很强商业系统理想的选择[5]。
2.4关于Struts
2.4.1 Struts简介
Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EE MVC实现方式。Struts用Java Servlet/JavaServerPages技术,开发Web应用程序的开放源码的framework。
2.4.2 Struts的主要功能
(1) 包含一个controllerservlet,能将用户的请求发送到相应的Action对象。
(2)JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。
(3)提供了一系列实用对象:XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。Struts项目的目标是为创建Java web应用提供一个开放源代framework。Struts framework的内核是基于例如Java Servlets,
JavaBeans, ResourceBundles, 和 XML,以及各种 Jakarta Commons包的标准技术的灵活的控制层。Struts提供了它自身的控制器组件,并整合了其他技术,以提供模型和视图。Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EE MVC实现方式[6]。
2.4.3 Struts工作原理
MVC(Model-View-Controller),是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化,MVC可以让整个逻辑很清晰,这种思想和思维和人的思维很接近,很容易被理解。
MVC的工作原理如图2-2所示:
图2-2 MVC工作原理
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,如图2-3所示:
图2-3 struts工作原理
(1)Controller:在XML文件Struts-config.xml中,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。
(2)视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
(3)模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等[7]。
2.5 关于Spring
2.5.1 Spring简介
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益[8]。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
2.5.2 为什么需要Spring
你可能正在想“Spring不过是另外一个的framework”。当已经有许多开放源代码(和专有) J2EE framework时,我们为什么还需要Spring Framework?
Spring是独特的,因为若干个原因:
◆它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。
◆ Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
◆它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。
2.5.3 Spring带给我们什么
◆方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
◆AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
◆声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
◆方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
◆方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
◆降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
◆Java 源码是经典学习范例
Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果[9]。
2.6 关于Hibernate
2.6.1为什么引入hibernate
在B/S项目的开发中,和数据库的交互式不可避免的,J2EE的规范中提供了JDBC的接口来操作数据库,对于JDBC,开发人员可以获取数据库连接,然后向数据库发送SQL语句,并返回数据库操作的结果集,然后封装成对象返回给上层的应用程序。这就造成开发人员不但要求能够编写程序,熟悉业务逻辑,还要求开发人员同时能够担任DBA,对开发人员的要求很高;同时,当引入新的项目时,很多地方必须废弃,因为我们的代码中不光是业务逻辑,其中也嵌入了许多和底层有关的一些SQL代码;
另外这些嵌入在代码中的SQL语句也影响了我们程序的可测试性,我们在对代码进行调试的时候,既要测试代码,同时我们还要测试SQL语句。为了解决这些问题,引入了hibernate[10]。
2.6.2使用Hibernate的好处
(1)Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP(Bean-Managed Persistence)里面的访问数据库的代码。
(2)Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和Application Server
没有任何关系,也不存在兼容性问题。
(3)Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC
的替代者出现的,而不是Entity Bean的替代者出现的。
(4)由于是对JDBC的轻易级封闭,内存消耗少,最快的运行效率。
(5)开发效率高,Eclipse、JBuilder等主流JAVA集成开发环境对Hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人。
(6)分布式,安全检查,集群,负载均衡的支持。
2.6.3 Hibernate的工作原理
Hibernate的工作就是为Object和Ralational之间提供一个映射,其工作流程如下面的图2-4所示。
图2-4 hibernate工作流程
(1) 启动Hibernate,如果在系统中添加Hibernate的支持,此处加载由系统自动完成。
(2) 读取hibernate.cfg.xml或者hibernate.properties文件的配置信息,并将其加载为实例。
(3) 构建SessionFactory实例(包含二级缓存)。
(4) 从SessionFactory中取得Session对象,从而可以调用其方法,对数据库进行操作,实现ORM的功能。
Hibernate可以通过一个XML的mapping文件把一个POJO(Plain old java object)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,我们可以配置好Object和数据库中标的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object实习自动的维护。Hibernate还提供查询语句(HQL)供应用程序使用,Hibernate对数据访问实现封装,还可以对查询语句的发送实现管理,达到优化的目的,能够有效减少数据库的访问频率。
2.7 Mysql
数据库(Database)是一系列信息资源的集合。在一个数据库中,与一个项目有关的所有信息都可以叫做一条记录(Record)。每一条记录都是由一系列的字段(Field)组成的。一系列记录的集合就构成了数据表格(Table)。对于一个简单的“平面文件”的数据库来说,它仅包含了一个数据表格,而对一个“关系型”数据库来说,它却包含两个或两个以上的数据表格,表格的各字段之间存在这一种或多种关系(有时可以把这种关系叫做“链接”)。
2.7.1 mysql的特点
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[11]。
2.7.2 mysql的安装和配置(部分截图)[12]
图2-5 mysql安装图(开始)
安装时一般采用默认路径:
图2-6 mysql安装图(路径)
图2-7 mysql安装图(数据库类型)
为了支持中文,在下面的列表框中学者gb2312(切记)
图2-8 mysql安装图(语言)
图2-9 mysql安装图(等待成功)
2.8 Tomcat服务器
2.8.1 Tomcat 服务器简介
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。 Tomcat中采用了Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从其官方网站上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性[13]。
2.8.2 Tomcat的特点
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。
2.8.3 Tomcat的优势
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache.我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。
2.8.4 Tomcat服务器的安装和配置
在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。
(1)需设置的环境变量
变量名:CATALINA_HOME
变量值:D:/Program Files/tomcat6.0
变量名:CLASSPATH
变量值:.;%JAVA_HOME%/lib;%CATALINA_HOME%/common/lib
(2)安装完成后,打开tomcat服务器,启动浏览器,在地址栏上输入:http://localhost:8080/ 若出现以下界面说明安装成功[14]。
图2-10 tomcat启动页面
小结
本章全面介绍本系统所用到的关键技术和工具,其中jsp作为javaweb开发的基础,对它的运行机制要理解,同时还要明白它的优劣势;j2ee作为开发的标准也作了简单介绍。而SSH(struts+spring+hibernate)作为本系统的核心与亮点技术,更是作了详细介绍,要掌握他们的工作原理,主要功能。最后介绍了本系统使用的数据库mysql以及tomcat服务器的安装与配置。只有掌握了这些技术基础,才能使本系统的开发正常进行。
第三章 系统需求分析和总体设计
3.1 系统功能需求
图3-1 系统功能模块
如图3-1所示,在本系统中主要阐述用户管理、购物车管理、订单管理、产品展示四个模块。
(1)购物车管理:实现添加商品、取消一个商品、数量修改、清空购物车功能。
(2)订单管理:实现提交订单、删除订单、查询订单功能。
(3)产品展示:实现产品列表、产品明细功能。
(4)用户管理:实现用户注册、用户信息修改、用户删除、用户查询功能。
3.2 系统角色及其功能分析
3.2.1 系统的3个角色:
(1)注册用户
(2)管理员
(3)普通的网站浏览者(即游客)
3.2.2 系统角色的功能
(1)普通用户
网站的普通浏览者(即游客)只能浏览商品。
(2)注册用户
普通浏览者只要注册为网站用户后,获得自己的帐号,设置自己的密码就具有以下功能:登录,登出,向购物车中添加商品,生成并提交订单。添加或修改个人明细资料。
(3)管理员
拥有注册用户的所有功能
还可以对用户进行管理,包括添加新用户、修改用户密码、删除用户。
3.3 总体设计思想概述
本系统是基于B/S架构下的多层结构应用系统。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)[15]。
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。推荐的分层式结构一般分为三层,从下至上分别为:数据访问(持久)层、业务逻辑层(或称为领域层)、表示层[16],如图3-2:
图3-2 系统架构
总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成,共同完成特定的功能。层与层之间存在自上而下的依赖关系,上层组件会依赖下层组件的API,而下层组件则不依赖于上层组件。例如:表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层。并且每个层对对上层公开API,但具体的实现细节对外透明。当某一层发生变化,只要API不变,不会影响其他层的实现。
在本系统中,使用开源的mysql数据库,持久层用到spring所集成的Hibernate技术,业务逻辑层用普通javabean实现,表述层运用基于struts的MVC设计模式(struts用来做C层,spring实现V层与C层的解耦以及C层与M层的解耦)。
3.4 数据库设计
3.4.1 E-R图
下面是该系统数据库表的E-R图,如图3-3:
图3-3 E-R图
3.4.2数据表的设计
下面列出了设计过程中所用到的数据库表及其结构:
orders表用来保存客户的订单信息,如表3-1:
1. orders
列名类型长度描述
orderidint11订单ID
totalpriceNUMBER16总价钱
orderstateNUMBER1订单状态
payinfoDATE 付款方式
CreatetimeDATE 创建日期
useridVARCHAR220用户ID
User_item_idNUMBER8用户明细ID
表3-1 orders
2. orderline表用来保存客户订单中的订单项信息,如表3-2:
3. orderline
列名类型长度描述
order_item_idNUMBER16订单条目ID
ProductidNUMBER16商品对象ID
OrderidVARCHAR220订单对象ID
qualityNUMBER8数量
numNUMBER8商品数量
表3-2 orderline
3.orderstatus表用来保存定单状态,如表3-3:
orderstatus
列名类型长度描述
statusidint11状态ID
namevarchar30状态名
descriptionvarchar100描述
表3-3 orderstatus
4.users表用来保存用户个人信息,如表3-4:
users
列名类型长度描述
user_idint11用户ID
passwordvarchar15用户密码
表3-4 users
5.contactinfo表用来保存用户个人明细,如表3-5:
contactinfo
列名类型长度描述
contact_idint11
User_idvarchar30用户id
Street1varchar64住址1
Street2varchar64住址2
cityvarchar32城市
provincevarchar32省份
Countryvarchar32国家
zipvarchar20邮编
officephonevarchar50办公室电话
cellphonevarchar20手机
emailvarchar20电邮
homephonevarchar12家庭电话
表3-5 contactinfo
6.product表用来保存商品,如表3-6:
product
列名类型长度描述
productidint11产品
modlevarchar30产品型号
namevarchar15品牌名
companyvarchar20出品公司
weightdouble50产品重量
pricedouble20价格
statevarchar20产品状态
createtimedate 出厂日期
CategoryidInt10产品类型
descriptionvarchar1000产品描述
表3-6 product
7.category表用来保存商品类型,如表3-7:
category
列名类型长度描述
categoryidint11类型ID
namevarchar30类型名
descriptionvarchar100描述
表3-7 category
8. payway表用来保存权限信息,如表3-8:
payway
列名类型长度描述
paywayidint11ID
payStylevarchar30名
表3-8 payway
3.5 系统的类设计
3.5.1 DAO类设计
图3-4 dao类设计
如图3-4,通过这个工厂获取对应的 DAO,然后使用DAO 进行数据库操作。
3.5.2 POJO类设计(部分)
图3-5 POJO类设计
这些实体类将通过hibernate映射到数据库中
3.5.3 过滤器类设计
图3-6 过滤器类设计1
如图3-6,这是编码过滤器类,通过他可保证页面不出现乱码问题。
图3-7 过滤器类设计2
如图3-7,这是登陆安全过滤器类,通过它来达到控制访问权限的功能。
3.5.4 监听器类设计
如图3-8,“CartSessionListener”启动时把购物车信息初始化到内存中,提高系统性能。“ProductContextListener”启动时把商品信息初始化到内存中,提高系统性能。
图3-8 监听器类设计
3.6系统的用例图
3.6.1 总体用例分析
图3-9 总体用例图
如图3-9,用户管理、购物车管理、订单管理、产品展示四个模块构成了本网上交易系统。User是指系统用户,包括注册用户和匿名用户两种,匿名用户只可以浏览商品,匿名用户通过用户管理模块注册后就可以使用购物车和下订单。
3.6.2 用户管理用例分析
图3-10 用户管理用例图
如图3-10,用户管理模块主要包括:用户登陆、用户注册、用户信息修改、用户删除、用户信息查询五个功能组成。
3.6.3 购物车管理用例分析
图3-11 购物车管理用例图
如图3-11,购物车管理模块主要包括:添加商品、取消一个商品、数量修改、清空购物车四个功能组成。
3.6.4 订单管理用例分析
图3-12 订单管理用例图
如图3-12,订单管理模块主要包括:订单提交、删除订单、订单明细三个功能组成。
3.6.5 产品展示用例分析
图3-13 产品展示用例图
如图3-13,商品展示模块主要包括:产品列表、产品明细两个功能组成。
小结
本章首先分析系统的功能需求,通过对系统功能模块的划分以及角色的划分,明确了系统需求,为总体设计提供依据。接下来阐述了系统的总体设计思想,说明了本系统是基于B/S架构下的多层结构应用系统。最后通过对数据库、过滤器、监听器、和实体类的设计分析,以及各个模块用例图的描述,形成了开发的整体思路,为下一步编程实现各个具体功能铺平了道路。
第四章 系统的详细设计
4.1 数据库与POJO映射的实现
前面第二章曾介绍过:Hibernate可以通过一个XML的mapping文件把一个POJO(Plain old java object)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,我们可以配置好Object和数据库中表的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object实习自动的维护。
由于Spring提供了对Hibernate的集成,所以我们可以不配置hibernate.cfg.xml文件,而通过在applicationContext.xml文件中进行相关配置来达到同样的目的。图例说明如下:
图4-1 user.hbm.xml
如图4-1,user.hbm.xml文件配置了user类的相关信息。
图4-2 session工厂配置
图4-2是applicationContext.xml文件中Session工厂的配置信息,可以看到,图中的mappingResources属性中囊括了所有我们需要的mapping文件。
4.2 主要模块的设计说明与界面
4.2.1用户管理模块
用户管理模块主要包括用户注册,登录,退出3个部分.
(1)用户注册
当用户第一次登录时首先要注册,成为会员后,才可以购买物品.用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作,用户注册页面的运行结果如图4-3所示.
图4-3用户登录/注册界面
如果用户的注册信息不符合要求,系统会提示用户,部分结果如图4-4:
图4-4登录信息提示界面
校验用户注册信息是是否正确的javaScript部分代码如下[17]:
当用户确认所提按信息无误后,单击“注册“按钮,系统会执行以下流程:
request 请求将页面上的信息传递到控制层的struts中的Action类中,执行以下代码
/*
* 注册一个新用户
*/
public ActionForward register(ActionMapping mapping,
ActionForm form,HttpServletRequest req, HttpServletResponse res) throws Exception {
ActionForward forward = null;
RegisterActionForm registerForm = (RegisterActionForm) form;
User user = registerForm.getUser();
ContactInfo contactInfo = registerForm.getContactInfo();
if (userBiz.getUserById(user.getUserid()) != null) {
user.setContactinfo(contactInfo);
req.setAttribute("user", user);
forward = mapping.findForward("refresh");
} else {
try {
log.debug("begin save user info . . .");
userBiz.userRegister(user, contactInfo);
req.setAttribute("TIP_KEY", "恭喜您!注册成功!");
forward = mapping.findForward("success");
} catch (ECPortException be) {
forward = mapping.findForward("fail");
be.printStackTrace();
log.error("save user info error. . .", be);
}
}
return forward;
}
在UserService中调用dao中的addUser方法,代码如下:
public void addUser(User user) throws StoreException {
.....
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
} .....
}
在注册成功后,会跳转到这样的页面,如图4-4:
图4-4注册成功界面
(2)用户登录
网站首页在用户第一次访问时会判断用户是否登录,未登录则显示用户登录窗口,提示用户登录或注册.对于已经登录的用户,在用户登录窗口将显示用户的相关信息.
首页主要是根据保存用户名信息的Session参数来判断用户是否已经登录的,关键代码如下:
在会员登录窗口中单击登录按纽后,系统将对用户名和密码进行验证,判断用户是否是已注册用户,如果已注册,则更新用户在网站中的状态,如果没有注册,则拒绝用户的登录操作,登录数据验证的程序代码如下:
/*
* 用户登录方法
*/
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String username = request.getParameter("userid");
String password = request.getParameter("password");
if (userService.isLoginCorrect(username, password)) {
User user = userService.getUserByName(username);
/*
* 只有在用户登录的时候才创建一个session,并且把用户的信息存放到session中;
* 同时sessionListener也会把car同时也放到session中,这样能保证为每一个来
* 网站需要购物的用户分配一个session,一个购物车,并且也可以利用session来 跟踪用户.
*/
HttpSession session = ((HttpServletRequest) request).getSession(true);
session.setAttribute("user", user);
return mapping.findForward("loginsuccess");
} else {
String message = "用户名或者密码错误!";
request.setAttribute("message", message);
return mapping.findForward("loginfailed");
}
}
public User getUserByName(String name) throws StoreException {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
User user = (User) session.createQuery(
"from User u where u.username = '" + name + "'")
.uniqueResult();
return user;
} ....
}
(3)用户退出
当用户决定退出网站时,只要点击当前页面上的“退出”按钮,就会回到首页。
实现代码如下:
/*
* 用户退出系统并做一些清理工作;
*/
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
session.removeAttribute("user");
session.removeAttribute("cart");
return mapping.findForward("logout");
}
(4)管理员登录
系统设置了一个默认的管理员admin,只要通过此用户名登录就可进入管理员界面,如图4-5和图4-6所示:
图4-5 管理员登录
图4-6 管理员界面
主要代码如下:
public ActionForward toModify(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
HttpSession cur_session = req.getSession(false);
User user = (User) cur_session.getAttribute("USER");
String userid = user.getUserid();
String reqUserid = req.getParameter("userid");
if (reqUserid == null) {
List userList = userBiz.findAllUsers();
cur_session.setAttribute("userList", userList);
if (userid.equals("admin")) {
return mapping.findForward("adminInfo");
} else {
User p_user = userBiz.getUserById(userid);
req.setAttribute("user", p_user);
}
}
if (reqUserid != null) {
User p_user = userBiz.getUserById(reqUserid);
req.setAttribute("user", p_user);
}
return mapping.findForward("modify");
}
4.2.2购物车管理模块
购物车管理模块主要功能有如下几个部分:
(1)创建购物车
当客户登录后,系统会给客户创建一个购物车放入服务器的Session会话中。使客户在整个会话中都拥有一个相同的购物车。这里主要运用了Http协议中的会话机制,将购物车保存在客户的会话中,这样在整个客户游览不同页面商品的过程中,都会使用同一个购物车对象。
具体执行步骤:
(1)从客户的请求对象中获取Session会话对象
(2)从会话对象中获取购物车对象
(3)判断是购物车对象是不是空的,如果是空是就创建一个
/*
* 在监听到session被创建之后,就立即向session中添加一个购物车Car;
*/
public void sessionCreated(HttpSessionEvent arg0) {
HttpSession session = arg0.getSession();
Cart cart=new Cart();
session.setAttribute("cart", cart);
}
/*
* 从session中获得购物车
*/
Cart cart = (Cart) session.getAttribute("cart");
if (cart == null) {
cart = new Cart();
}
(2)向购物车中添加一个商品项
客户在查看网页上的一个商品时,当向服务器发送一个“添加到购物车”的请求时,会执行这个功能。
功能执行过程:
(1)从客户请求对象中获取商品的ID
(2)调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象
(3)从商品对象中获取商品名,商品价格,来构建一个商品项对象
(4)从Session会话中获取购物车对象
(5)调用业务层的方法来根据购物车对象和商品项对象来执行添加操作
(6)将些商品项对象放入到购物车中
部分实现代码:
/*
* 从数据库中把商品取到;
*/
ProductService productService = (ProductService) ServiceFactory.getInstance().getService(Globals.PRODUCT_SERVICE);
Integer id = Integer.parseInt(request.getParameter("productid"));
Product product = productService.getProductById(id);
/*
* 在向购物车中添加商品的时候会判断商品是否已经存在,
* 已存在的就不让在加入了;
*/
if (cart.isExist(id)) {
message = "该商品已经存在!请返回!";
request.setAttribute("message", message);
return mapping.findForward("error");
} else {
/*
* 向购物车添加一个商品;
*/
cart.addCart(product);
session.setAttribute("cart", cart);
return mapping.findForward("addcartsuccess");
}
(3) 修改购物车中一个商品项
在客户查看购物车时,想修改自己的购买商品时,会执行这个功能。由于商品的名称和价格都是系统管理人员设置的,所以客户都不可以修改,客户只能修改他/她所购买商品的数量。修改所选购的商品数量时,相应的商品项的小计和购物车的总计都会保持实时的更新,如图4-7。
图4-7 修改商品数量
功能的执行步骤:
(1)将ActionForm转换为ItemForm对象
(2)从ItemForm对象中获取商品ID
(3)从Session会话中获取购物车对象
(4)根据商品ID去调用业务层的方法去修改商品项
(5)修改小计
(6)将些商品项对象放入到购物车中
部分实现代码:
public ActionForward modifyNumber(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
String tempid = req.getParameter("productId");
Long productId = Long.parseLong(tempid);
String tempNum = req.getParameter("num" + productId);// num是一与JSP页面一致的字符串
int num = new Integer(tempNum).intValue();
HttpSession session = req.getSession(false);
IShoppingCart cart = (IShoppingCart) session
.getAttribute("SHOPPING_CART");
cart.modifyProductAmountById(productId, num);
return mapping.findForward("success");
}
(4)查看购物车
客户选取了所有的商品后,来向服务器发送“购物车”请求时,会执行此功能,系统根据会话中的购物车中的商品项,来获取客户所选选商品的一个集合,在JSP页面上对这个集合中的商品项进行显示,如图4-8。
图4-8 我的购物车
功能的执行步骤:
(1)从客户的请求对象中获取购物车对象
(2)从购物车对象中获取所有的商品项
(3)将所有的商品项对象加载到请求对象中发送给客户端
部分实现代码:
var="orderLine" items="${sessionScope.SHOPPING_CART.orders.orderlines}" varStatus="status">
(5)删除购物车中的一个商品项
客户在查看购物车时,当向服务器发送一个“删除商品项”的请求时,会执行这个功能。删除商品项时,系统会自动更新购物车的总计值,如图4-9:
图4-9 删除商品
功能执行过程:
1从客户请求对象中获取商品的ID
2调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象
3从Session会话中获取购物车对象
4调用业务层的方法根据商品ID去删除购物车对象中的商品项
5将购物车重新加入到Session会话中,来更新Session会话中的购物车对象
部分代码实现:
//删除购物车中一个商品项
public ActionForward deleteById(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
String tempid = req.getParameter("productId");
Long productId = Long.parseLong(tempid);
HttpSession session = req.getSession(false);
ShoppingCart cart = (ShoppingCart) session
.getAttribute("SHOPPING_CART");
cart.removeProductById(productId);
if (cart.isEmpty()) {
return mapping.findForward("index");
}
return mapping.findForward("success");
}
(6)清空购物车
客户在查看购物时不要想要所有所选的商品时,向服务器发送“清空购物车”请求时会执行此功能。如图4-10:
图4-10 清空购物车
执行此功能的步骤:
(1)从请求对象中获取Session会话
(2)从Session会话中获取购物车对象
(3)将购物车对象传给业务层的方法去清空购物车中的所有商品项
部分实现代码:
/*
* 也就是从session中把购物车清除掉;
*/
public ActionForward clearShopCart(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
HttpSession session = req.getSession(false);
IShoppingCart cart = (IShoppingCart) session
.getAttribute("SHOPPING_CART");
cart.removeAllProducts();
return mapping.findForward("index");
}
4.2.3 定单模块
生成订单是网上购物商城的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号,还要保存用户订单中所购买的商品信息。当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。结帐的流程是:从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中。
1、创建一个订单
客户选好了所有的商品时,并确认要买时,会向服务器发送一个“生成定单”的请求,运行结果如图4-11:
图4-11 生成订单
此时用户可以添加收货人的地址,点击图中的用户信息“修改”,会弹出一个页面,在此修改收货人地址等信息,如图4-12:
图4-12 修改收货地址
/*
* 将修改后的地址保存到数据库中,其中保存了用户的信息:id
*/
public void addUserItem(UserItem useritem) throws StoreException {
..
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
session.save(useritem);
tx.commit();
} ..
}
用户确认无误后点击图4-11的“提交订单“,会出现下图:
图4-13 订单列表
部分实现代码:
/*
* 确定定单
*/
public ActionForward checkOut(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
ActionForward forward = null;
GregorianCalendar gc = new GregorianCalendar();
Long paywayid = Long.parseLong(req.getParameter("payway"));
PayWay pw = new PayWay(paywayid);
List orderStatus = (List) req.getSession().getServletContext()
.getAttribute("all_orderStatus");
OrderStatus os = (OrderStatus) orderStatus.get(1);
HttpSession session = req.getSession(false);
User user = (User) session.getAttribute("USER");
ShoppingCart cart = (ShoppingCart) session
.getAttribute("SHOPPING_CART");
// Map orderLineMap = cart.getOrderLineMap();
Orders order = cart.getOrders();
order.setUsers(user);
order.setCost(cart.getTotalPrice());
order.setName(user.getUserid() + "-" + gc.get(gc.YEAR) + ""
+ gc.get(gc.MONTH) + "" + gc.get(gc.DAY_OF_MONTH));
order.setPayway(pw);
order.setOrderstatus(os);
try {
log.debug("=== begin to generator order =====");
orderBiz.checkOut(order);
log.debug("==== generator order success . . .");
forward = mapping.findForward("success");
} catch (ECPortException be) {
forward = mapping.findForward("fail");
log.error("==== save user order fail...", be);
be.printStackTrace();
}
cart.removeAllProducts(); // 定单产生后应清楚当明购物车中的商品
return forward;
}
/*
* 向数据库中保存一个指定的order对象;
*/
public void save(Orders transientInstance) {
log.debug("saving Orders instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
2.查看定单
客户确认了所有的订单选项后,可以向服务器 发送“查看定单明细”的请求:当用户点击了图4-13上的“明细”按钮是,页面运行结果如下:
图4-14 订单明细
部分代码实现:
/*
* 根据指定的order对象来获得属于该order的所有orderline项;
*/
public ActionForward orderDetail(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
ActionForward forward = null;
String tempid = req.getParameter("orderid");
Long orderid = Long.parseLong(tempid);
Orders order = null;
try {
order = orderBiz.getOrderById(orderid);
log.debug("=== get order successful.===");
req.setAttribute("ORDER", order);
forward = mapping.findForward("showinfo");
} catch (ECPortException be) {
log.error("==== get failed .====");
forward = mapping.findForward("fail");
}
return forward;
}
4.3 系统的测试
测试是软件开发必不可少的环节,每个开发者都应该养成良好的测试习惯,一个系统的完善就是通过不断地测试与维护来完成的。
测试的意义有以下几点[18]:
(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
测试一般有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品的内部动作是否按照说明书的规定正常运行。前一个方法称为黑盒测试,后一个称为白盒测试。
对于本系统,我采取第一个方法,即黑盒测试。做完一个模块,就进行测试,看所做的模块能不能实现所需要的功能。经过了先期的模块测试和后期的综合测试,本系统实现了规格说明书的所有功能,达到了预期的要求。
小结
本章详细介绍了系统主要功能模块的具体实现,包括用户管理模块、购物车模块和定单模块,分析他们的设计思路,执行步骤,并给出了每个功能的主要实现代码,还有为每个功能的最终执行结果配上截图,让我们看到更直观的效果。最后对完成的系统进行了测试,介绍了两种主流的测试方法,给出了测试结果,达到了预期的要求。
第五章 总结与展望
5.1 工作总结
开发Web站点,是一项复杂、繁重的工作,需要多方面的知识。
此次通过设计网上交易系统,使我接触到许多基于java语言的WEB网络开发方面的知识,包括HTML语言,CSS级联样式表,客户端开发语言JavaScript,MVC分层体系结构,支持MVC架构的struts框架,开源服务器Tomcat,mysql数据库,服务器端开发语言JSP等,这些语言(或技术)扩展了我的知识面,也使我在制作的过程中对它们的特点,应用方向等有了基本的了解,并在实际的应用中大致明白如何将它们融合运用,以开发出界面美观,功能强大的Web站点来。
通过本次亲自动手设计系统,我更加深刻的了解系统开发的全过程,从中我熟练掌握了B/S结构Web应用软件设计的思想及其开发的全过程。首先要进行系统的需求分析,分析系统要达到什么功能,系统要划分为几个模块来设计,系统的具体功能应当如何去实现;分析完之后,考虑其涉及到的计算机专业知识,把问题细化,把大的问题划分为小的问题,然后逐个进行解决。毕业设计开始阶段,由于我们没有软件架构的设计经验,所以在项目的业务流程和软件的开发规范上犯了很的错误,所以在后期的组装过程变的非常的困难。
设计收获:
1.掌握了网站开发的基本流程,设计整个网站的功能模块图;
2.掌握了如何搭建和配置一个Tomcat服务器;
3.掌握了使用JSP编程,实现对信息的显示、修改、删除和添加等;
遇到的问题:
1.JSP中文乱码问题的解决
对于JSP中文乱码问题的处理,常用的方法有两种:一种方法是在JSP页面上设置页面的“contentType”属性。这种方法就是在页面开始时,设置页面的“contentType”属性,例如:
另一种方法是输出中文信息时使用“ISO 8859-1”编码。这种方法是在输出中文信息之前,对中文信息进行一次“ISO 8859-1”编码。
2.Java.lang.NullPointerException异常
一般是对一个为NULL值的变量进行操作引起的。为了避免这种异常,最好在对变量操作之前检查看它是否为NULL值。
3.SQL语句换行书写时未加适当的空格而导致的错误。我们先看一段代码,
String test=aaa;
String sql=〞select * from test〞+
〞where test1=’〞+a+〞’〞+
〞and test2=bbb〞;
上面所示的代码在执行时将转换成这样的SQL语句:
Select *from testwhere test1=’aaa’ and test2=bbb
从输出的SQL语句可以看出test和where之间,以及’aaa’和and之间都缺空格,这样是不能从数据库中取出数据的.正确的写法如下:
String test=aaa;
String sql=〞select * from test〞+
〞 where test1=’〞+a+〞’〞+
〞 and test2=bbb〞;
5.2 后续工作展望
由于个人能力有限以及实践经验欠缺,系统基本满足在线电子产品交易的功能需求,本系统不可避免有不足之处,如一些系统功能过于简单,所以系统的功能还算不上很完善。希望老师和同学能给予建议和指导。
参考文献
[1] 景玉建.电子商务的发展与前景[J].《职业时空》,2005年第13期,P10-11
[2] 张孝祥.深入Java Web开发内幕——核心基础[M].北京:电子工业出版社.北京.2006.10
致谢
本次毕业设计的最终完成离不开很多人的大力协助。衷心的感谢上海达内科技有限公司在我实习期间交给我这个项目任务,使我有了设计课题,还感谢在实习期间给我帮助的项目经理以及公司同事。真诚的感谢本次毕业设计的指导老师-宋玲教授,给了我自由选题的机会,在我的论文审稿阶段指出了很多方面的不足,并一一给出修改意见,对我进行悉心指导,对我的毕业论文最终完成给予了极大的支持和帮助。
特别感谢曹杰师兄,在毕业设计中遇到难点的时候,热情和耐心地给予指导,对我毕业设计工作的顺利完成有着重要的意义。
最后,再一次感谢所有帮助过我的人们!#p#副标题#e#
浏览量:5
下载量:0
时间: